/**
 * 需求管理页面的JavaScript功能
 */

// DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    // 检查用户权限
    checkAdminPermission();
    
    // 初始化侧边栏
    initSidebar();
    
    // 初始化筛选功能
    initFilters();
    
    // 初始化搜索功能
    initSearch();
    
    // 初始化表格交互
    initTableActions();
    
    // 初始化分页功能
    initPagination();
    
    // 初始化批量操作
    initBatchOperations();
    
    // 初始化添加需求按钮
    initAddDemandButton();
});

/**
 * 检查用户是否有管理员权限
 */
function checkAdminPermission() {
    // 获取用户信息
    const userInfo = JSON.parse(localStorage.getItem('userInfo') || 'null');
    
    // 如果用户未登录或不是管理员，重定向到登录页
    if (!userInfo || !userInfo.isAdmin) {
        window.utils.showNotification('您没有管理员权限，请使用管理员账号登录', 'error');
        setTimeout(() => {
            window.location.href = '../login.html';
        }, 2000);
    }
}

/**
 * 初始化侧边栏
 */
function initSidebar() {
    // 获取当前页面路径
    const currentPath = window.location.pathname.split('/').pop() || 'dashboard.html';
    
    // 设置当前页面的侧边栏项为激活状态
    const sidebarItems = document.querySelectorAll('.admin-sidebar-item');
    sidebarItems.forEach(item => {
        const link = item.querySelector('a');
        const linkPath = link.getAttribute('href');
        if (linkPath === currentPath) {
            item.classList.add('active');
        } else {
            item.classList.remove('active');
        }
    });
    
    // 获取用户信息并更新侧边栏用户信息
    const userInfo = JSON.parse(localStorage.getItem('userInfo') || 'null');
    if (userInfo) {
        const usernameElement = document.querySelector('.admin-username');
        if (usernameElement) {
            usernameElement.textContent = userInfo.username || '管理员';
        }
    }
}

/**
 * 初始化筛选功能
 */
function initFilters() {
    const filterSelects = document.querySelectorAll('.filter-select');
    filterSelects.forEach(select => {
        select.addEventListener('change', function() {
            // 执行筛选逻辑
            filterDemands();
        });
    });
}

/**
 * 审核通过需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function approveDemand(demandTitle, row) {
    // 如果没有传入行元素，则查找对应的行
    if (!row) {
        // 查找对应的行
        const allTitles = document.querySelectorAll('.demand-title');
        for (let i = 0; i < allTitles.length; i++) {
            if (allTitles[i].textContent === demandTitle) {
                row = allTitles[i].closest('tr');
                break;
            }
        }
        if (!row) return;
    }
    
    window.utils.showConfirm(
        `确定要通过 ${demandTitle} 的审核吗？`,
        function() {
            // 更新状态标识
            const statusBadge = row.querySelector('.status-badge');
            statusBadge.className = 'status-badge status-active';
            statusBadge.textContent = '已发布';
            
            // 更新下拉菜单选项
            updateDropdownMenu(row, '已发布');
            
            // 重新绑定事件
            bindDemandActions();
            
            // 关闭模态框（如果是从模态框调用的）
            if (document.querySelector('.modal')) {
                window.utils.closeModal();
            }
            
            // 显示成功通知
            window.utils.showNotification(`已通过 ${demandTitle} 的审核`, 'success');
        }
    );
}

/**
 * 拒绝需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function rejectDemand(demandTitle, row) {
    // 如果没有传入行元素，则查找对应的行
    if (!row) {
        // 查找对应的行
        const allTitles = document.querySelectorAll('.demand-title');
        for (let i = 0; i < allTitles.length; i++) {
            if (allTitles[i].textContent === demandTitle) {
                row = allTitles[i].closest('tr');
                break;
            }
        }
        if (!row) return;
    }
    
    // 创建拒绝原因输入模态框
    window.utils.createModal({
        title: '拒绝需求',
        content: `
            <form id="reject-demand-form">
                <div class="form-group">
                    <label for="reject-reason">拒绝原因</label>
                    <textarea id="reject-reason" class="form-control" rows="3" placeholder="请输入拒绝原因"></textarea>
                </div>
                <div class="form-actions">
                    <button type="button" class="btn btn-secondary" onclick="window.utils.closeModal()">取消</button>
                    <button type="button" class="btn btn-danger" onclick="confirmRejectDemand('${demandTitle}')">确认拒绝</button>
                </div>
            </form>
        `
    });
}

/**
 * 确认拒绝需求
 * @param {string} demandTitle - 需求标题
 */
function confirmRejectDemand(demandTitle) {
    // 获取拒绝原因
    const reason = document.getElementById('reject-reason').value;
    
    // 验证拒绝原因
    if (!reason.trim()) {
        window.utils.showNotification('请输入拒绝原因', 'error');
        return;
    }
    
    // 查找对应的行
    let row = null;
    const allTitles = document.querySelectorAll('.demand-title');
    for (let i = 0; i < allTitles.length; i++) {
        if (allTitles[i].textContent === demandTitle) {
            row = allTitles[i].closest('tr');
            break;
        }
    }
    
    if (row) {
        // 更新状态标识
        const statusBadge = row.querySelector('.status-badge');
        statusBadge.className = 'status-badge status-closed';
        statusBadge.textContent = '已关闭';
        
        // 更新下拉菜单选项
        updateDropdownMenu(row, '已关闭');
        
        // 重新绑定事件
        bindDemandActions();
    }
    
    // 关闭模态框
    window.utils.closeModal();
    
    // 显示成功通知
    window.utils.showNotification(`已拒绝需求 ${demandTitle}`, 'success');
}

/**
 * 置顶需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function pinDemand(demandTitle, row) {
    window.utils.showConfirm(
        `确定要将 ${demandTitle} 置顶吗？`,
        function() {
            // 获取表格和第一行
            const table = document.querySelector('.admin-table tbody');
            const firstRow = table.querySelector('tr:first-child');
            
            // 将当前行移动到第一行
            table.insertBefore(row, firstRow);
            
            // 显示成功通知
            window.utils.showNotification(`已将 ${demandTitle} 置顶`, 'success');
        }
    );
}

/**
 * 重新开放需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function reopenDemand(demandTitle, row) {
    // 如果没有传入行元素，则查找对应的行
    if (!row) {
        // 查找对应的行
        const allTitles = document.querySelectorAll('.demand-title');
        for (let i = 0; i < allTitles.length; i++) {
            if (allTitles[i].textContent === demandTitle) {
                row = allTitles[i].closest('tr');
                break;
            }
        }
        if (!row) return;
    }
    
    window.utils.showConfirm(
        `确定要重新开放 ${demandTitle} 吗？`,
        function() {
            // 更新状态标识
            const statusBadge = row.querySelector('.status-badge');
            statusBadge.className = 'status-badge status-active';
            statusBadge.textContent = '已发布';
            
            // 更新下拉菜单选项
            updateDropdownMenu(row, '已发布');
            
            // 重新绑定事件
            bindDemandActions();
            
            // 关闭模态框（如果是从模态框调用的）
            if (document.querySelector('.modal')) {
                window.utils.closeModal();
            }
            
            // 显示成功通知
            window.utils.showNotification(`已重新开放 ${demandTitle}`, 'success');
        }
    );
}

/**
 * 删除需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function deleteDemand(demandTitle, row) {
    window.utils.showConfirm(
        `确定要删除需求 ${demandTitle} 吗？此操作不可恢复！`,
        function() {
            // 模拟删除操作
            // 实际项目中应该发送AJAX请求到服务器
            row.style.opacity = '0.5';
            setTimeout(() => {
                row.remove();
                
                // 显示成功通知
                window.utils.showNotification(`需求 ${demandTitle} 已删除`, 'success');
                
                // 更新分页
                updatePagination();
            }, 500);
        }
    );
}

/**
 * 初始化分页功能
 */
function initPagination() {
    document.querySelectorAll('.page-item').forEach(item => {
        item.addEventListener('click', function() {
            // 如果是下一页按钮且不是最后一页，则不添加active类
            if(this.querySelector('.bi-chevron-right')) {
                // 获取当前活动页
                const activePage = document.querySelector('.page-item.active');
                const nextPage = parseInt(activePage.textContent) + 1;
                
                // 如果下一页存在，则切换到下一页
                const nextPageElement = document.querySelector(`.page-item:nth-child(${nextPage})`);
                if(nextPageElement) {
                    document.querySelectorAll('.page-item').forEach(i => {
                        i.classList.remove('active');
                    });
                    nextPageElement.classList.add('active');
                    loadPage(nextPage);
                }
                return;
            }
            
            // 移除所有分页项的active类
            document.querySelectorAll('.page-item').forEach(i => {
                i.classList.remove('active');
            });
            
            // 给当前分页项添加active类
            this.classList.add('active');
            
            // 加载对应页面的数据
            loadPage(this.textContent);
        });
    });
}
/**
 * 加载指定页面的数据
 * @param {number} page - 页码
 */
function loadPage(page) {
    // 模拟从服务器获取数据
    // 实际项目中应该发送AJAX请求到服务器
    setTimeout(() => {
        // 获取表格
        const table = document.querySelector('.admin-table tbody');

        // 清空表格
        table.innerHTML = '';

/**
 * 初始化批量操作
 */
function initBatchOperations() {
    // 全选功能
    const selectAllCheckbox = document.getElementById('select-all-demands');
    const demandCheckboxes = document.querySelectorAll('.demand-checkbox');
    
    if (selectAllCheckbox) {
        selectAllCheckbox.addEventListener('change', function() {
            demandCheckboxes.forEach(checkbox => {
                checkbox.checked = this.checked;
            });
        });
    }
    
    // 批量操作按钮可以在这里添加
    // 例如批量审核通过、批量拒绝、批量删除等
}

/**
 * 初始化添加需求按钮
 */
function initAddDemandButton() {
    // 使用更兼容的方式查找带有加号图标的按钮
    const buttons = document.querySelectorAll('.btn-primary');
    let addButton = null;
    
    // 遍历所有主要按钮，查找包含加号图标的按钮
    for (let i = 0; i < buttons.length; i++) {
        if (buttons[i].querySelector('i.bi-plus')) {
            addButton = buttons[i];
            break;
        }
    }
    
    if (addButton) {
        addButton.addEventListener('click', function() {
            showAddDemandForm();
        });
    }
}

/**
 * 显示添加需求表单
 */
function showAddDemandForm() {
    window.utils.createModal({
        title: '添加需求',
        content: `
            <form id="add-demand-form">
                <div class="form-group">
                    <label for="add-demand-title">需求标题</label>
                    <input type="text" id="add-demand-title" class="form-control" placeholder="请输入需求标题">
                </div>
                <div class="form-group">
                    <label for="add-demand-location">需求地点</label>
                    <input type="text" id="add-demand-location" class="form-control" placeholder="请输入需求地点">
                </div>
                <div class="form-group">
                    <label for="add-demand-publisher">发布者</label>
                    <input type="text" id="add-demand-publisher" class="form-control" placeholder="请输入发布者">
                </div>
                <div class="form-group">
                    <label for="add-demand-subject">学科</label>
                    <select id="add-demand-subject" class="form-control">
                        <option>语文</option>
                        <option>数学</option>
                        <option>英语</option>
                        <option>物理</option>
                        <option>化学</option>
                        <option>生物</option>
                        <option>历史</option>
                        <option>地理</option>
                        <option>政治</option>
                        <option>音乐</option>
                        <option>美术</option>
                        <option>体育</option>
                        <option>科学</option>
                    </select>
                </div>
                <div class="form-group">
                    <label for="add-demand-duration">支教时长</label>
                    <select id="add-demand-duration" class="form-control">
                        <option>1个月</option>
                        <option>2个月</option>
                        <option>3个月</option>
                        <option>6个月</option>
                        <option>1年</option>
                    </select>
                </div>
                <div class="form-check">
                    <input type="checkbox" id="add-demand-urgent" class="form-check-input">
                    <label for="add-demand-urgent" class="form-check-label">标记为紧急</label>
                </div>
                <div class="form-group">
                    <label for="add-demand-description">需求描述</label>
                    <textarea id="add-demand-description" class="form-control" rows="5" placeholder="请输入需求描述"></textarea>
                </div>
                <div class="form-group">
                    <label for="add-demand-requirements">要求条件</label>
                    <textarea id="add-demand-requirements" class="form-control" rows="5" placeholder="请输入要求条件"></textarea>
                </div>
                <div class="form-actions">
                    <button type="button" class="btn btn-secondary" onclick="window.utils.closeModal()">取消</button>
                    <button type="button" class="btn btn-primary" onclick="addNewDemand()">添加</button>
                </div>
            </form>
        `
    });
}

/**
 * 添加新需求
 */
function addNewDemand() {
    // 获取表单数据
    const title = document.getElementById('add-demand-title').value;
    const location = document.getElementById('add-demand-location').value;
    const publisher = document.getElementById('add-demand-publisher').value;
    const subject = document.getElementById('add-demand-subject').value;
    const duration = document.getElementById('add-demand-duration').value;
    const isUrgent = document.getElementById('add-demand-urgent').checked;
    
    // 验证表单数据
    if (!title || !location || !publisher) {
        window.utils.showNotification('需求标题、地点和发布者不能为空', 'error');
        return;
    }
    
    // 模拟添加操作
    // 实际项目中应该发送AJAX请求到服务器
    setTimeout(() => {
        // 获取表格
        const table = document.querySelector('.admin-table tbody');
        
        // 创建新行
        const newRow = document.createElement('tr');
        newRow.innerHTML = `
            <td>
                <input type="checkbox" class="demand-checkbox">
            </td>
            <td>
                <div class="demand-info">
                    <div class="demand-title">${title}</div>
                    <div class="demand-location">
                        <i class="bi bi-geo-alt"></i> ${location}
                    </div>
                    <div class="demand-tags">
                        <span class="demand-tag subject">${subject}</span>
                        <span class="demand-tag duration">${duration}</span>
                        ${isUrgent ? '<span class="demand-tag urgent">紧急</span>' : ''}
                    </div>
                </div>
            </td>
            <td>${publisher}</td>
            <td>${new Date().toISOString().split('T')[0]}</td>
            <td>0</td>
            <td><span class="status-badge status-pending">待审核</span></td>
            <td>
                <div class="table-actions">
                    <button class="btn-icon" title="查看详情">
                        <i class="bi bi-eye"></i>
                    </button>
                    <button class="btn-icon" title="编辑">
                        <i class="bi bi-pencil"></i>
                    </button>
                    <div class="demand-actions-dropdown">
                        <button class="btn-icon dropdown-toggle" title="更多操作">
                            <i class="bi bi-three-dots-vertical"></i>
                        </button>
                        <div class="dropdown-menu">
                            <a href="#" class="dropdown-item">
                                <i class="bi bi-check-circle"></i> 审核通过
                            </a>
                            <a href="#" class="dropdown-item">
                                <i class="bi bi-x-circle"></i> 拒绝
                            </a>
                            <a href="#" class="dropdown-item text-danger">
                                <i class="bi bi-trash"></i> 删除
                            </a>
                        </div>
                    </div>
                </div>
            </td>
        `;
        
        // 添加到表格
        table.insertBefore(newRow, table.firstChild);
        
        // 重新绑定事件
        bindDemandActions();
        
        // 关闭模态框
        window.utils.closeModal();
        
        // 显示成功通知
        window.utils.showNotification(`需求 ${title} 已添加`, 'success');
    }, 500);
}

/**
 * 更新分页
 */
function updatePagination() {
    // 获取可见的行数
    const visibleRows = document.querySelectorAll('.admin-table tbody tr:not([style*="display: none"])');
    
    // 更新分页信息
    // 实际项目中应该根据服务器返回的数据更新分页
    console.log(`可见行数: ${visibleRows.length}`);
}

/**
 * 根据筛选条件过滤需求列表
 */
function filterDemands() {
    // 获取筛选条件
    const statusFilter = document.querySelector('.filter-select:nth-child(1)').value;
    const regionFilter = document.querySelector('.filter-select:nth-child(2)').value;
    const subjectFilter = document.querySelector('.filter-select:nth-child(3)').value;
    
    // 获取所有需求行
    const rows = document.querySelectorAll('.admin-table tbody tr');
    
    // 遍历每一行，根据筛选条件显示或隐藏
    rows.forEach(row => {
        const status = row.querySelector('.status-badge').textContent.trim();
        const region = row.querySelector('.demand-location').textContent.trim();
        const subject = row.querySelector('.demand-tag.subject') ? row.querySelector('.demand-tag.subject').textContent.trim() : '';
        
        // 判断是否符合筛选条件
        const matchStatus = statusFilter === '所有需求' || status === statusFilter.replace('已发布', '已发布').replace('待审核', '待审核').replace('已关闭', '已关闭');
        const matchRegion = regionFilter === '所有地区' || region.includes(regionFilter);
        const matchSubject = subjectFilter === '所有学科' || subject === subjectFilter;
        
        // 显示或隐藏行
        if (matchStatus && matchRegion && matchSubject) {
            row.style.display = '';
        } else {
            row.style.display = 'none';
        }
    });
    
/**
 * 初始化搜索功能
 */
function initSearch() {
    const searchInput = document.getElementById('demand-search-input');
    if (searchInput) {
        searchInput.addEventListener('input', function() {
            const searchTerm = this.value.toLowerCase();
            const rows = document.querySelectorAll('.admin-table tbody tr');
            
            rows.forEach(row => {
                const demandTitle = row.querySelector('.demand-title').textContent.toLowerCase();
                const demandLocation = row.querySelector('.demand-location').textContent.toLowerCase();
                const publisher = row.querySelector('td:nth-child(3)').textContent.toLowerCase();
                
                // 如果搜索词匹配需求标题、地点或发布者，则显示该行
                if (demandTitle.includes(searchTerm) || demandLocation.includes(searchTerm) || publisher.includes(searchTerm)) {
                    row.style.display = '';
                } else {
                    row.style.display = 'none';
                }
            });
            
            // 更新分页
            updatePagination();
        });
    }
}

/**
 * 初始化表格交互
 */
function initTableActions() {
    // 下拉菜单交互
    const dropdownToggles = document.querySelectorAll('.dropdown-toggle');
    
    dropdownToggles.forEach(toggle => {
        toggle.addEventListener('click', function(e) {
            e.stopPropagation();
            const dropdown = this.nextElementSibling;
            
            // 关闭所有其他下拉菜单
            document.querySelectorAll('.dropdown-menu.show').forEach(menu => {
                if (menu !== dropdown) {
                    menu.classList.remove('show');
                }
            });
            
            // 切换当前下拉菜单
            dropdown.classList.toggle('show');
        });
    });
    
    // 点击页面其他地方关闭下拉菜单
    document.addEventListener('click', function() {
        document.querySelectorAll('.dropdown-menu.show').forEach(menu => {
            menu.classList.remove('show');
        });
    });
    
    // 绑定需求操作事件
    bindDemandActions();
}

/**
 * 绑定需求操作事件
 */
function bindDemandActions() {
    // 查看需求详情
    document.querySelectorAll('.btn-icon[title="查看详情"]').forEach(btn => {
        btn.addEventListener('click', function() {
            const row = this.closest('tr');
            const demandTitle = row.querySelector('.demand-title').textContent;
            const demandLocation = row.querySelector('.demand-location').textContent;
            showDemandDetails(demandTitle, demandLocation, row);
        });
    });
    
    // 编辑需求
    document.querySelectorAll('.btn-icon[title="编辑"]').forEach(btn => {
        btn.addEventListener('click', function() {
            const row = this.closest('tr');
            const demandTitle = row.querySelector('.demand-title').textContent;
            editDemand(demandTitle, row);
        });
    });
    
    // 审核通过 - 修复:has选择器
    document.querySelectorAll('.dropdown-item').forEach(item => {
        const icon = item.querySelector('i.bi-check-circle');
        if (icon) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const row = this.closest('tr');
                const demandTitle = row.querySelector('.demand-title').textContent;
                approveDemand(demandTitle, row);
            });
        }
    });
    
    // 拒绝需求 - 修复:has选择器
    document.querySelectorAll('.dropdown-item').forEach(item => {
        const icon = item.querySelector('i.bi-x-circle');
        if (icon) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const row = this.closest('tr');
                const demandTitle = row.querySelector('.demand-title').textContent;
                rejectDemand(demandTitle, row);
            });
        }
    });
    
    // 置顶需求 - 修复:has选择器
    document.querySelectorAll('.dropdown-item').forEach(item => {
        const icon = item.querySelector('i.bi-arrow-up-circle');
        if (icon) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const row = this.closest('tr');
                const demandTitle = row.querySelector('.demand-title').textContent;
                pinDemand(demandTitle, row);
            });
        }
    });
    
    // 重新开放 - 修复:has选择器
    document.querySelectorAll('.dropdown-item').forEach(item => {
        const icon = item.querySelector('i.bi-arrow-counterclockwise');
        if (icon) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const row = this.closest('tr');
                const demandTitle = row.querySelector('.demand-title').textContent;
                reopenDemand(demandTitle, row);
            });
        }
    });
    
    // 删除需求 - 修复:has选择器
    document.querySelectorAll('.dropdown-item').forEach(item => {
        const icon = item.querySelector('i.bi-trash');
        if (icon) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const row = this.closest('tr');
                const demandTitle = row.querySelector('.demand-title').textContent;
                deleteDemand(demandTitle, row);
            });
        }
    });
}

/**
 * 显示需求详情
 * @param {string} demandTitle - 需求标题
 * @param {string} demandLocation - 需求地点
 * @param {HTMLElement} row - 表格行元素
 */
function showDemandDetails(demandTitle, demandLocation, row) {
    // 获取需求标签
    const tags = [];
    row.querySelectorAll('.demand-tag').forEach(tag => {
        tags.push(tag.textContent);
    });
    
    // 获取需求状态
    const status = row.querySelector('.status-badge').textContent;
    
    // 创建模态框显示详情
    window.utils.createModal({
        title: '需求详情',
        content: `
            <div class="demand-details">
                <div class="demand-details-header">
                    <h3>${demandTitle}</h3>
                    <div class="demand-details-meta">
                        <div class="demand-location">
                            <i class="bi bi-geo-alt"></i> ${demandLocation}
                        </div>
                        <div class="demand-tags">
                            ${tags.map(tag => `<span class="demand-tag">${tag}</span>`).join('')}
                        </div>
                    </div>
                </div>
                <div class="demand-details-info">
                    <div class="detail-item">
                        <div class="detail-label">发布者：</div>
                        <div class="detail-value">${row.querySelector('td:nth-child(3)').textContent}</div>
                    </div>
                    <div class="detail-item">
                        <div class="detail-label">发布时间：</div>
                        <div class="detail-value">${row.querySelector('td:nth-child(4)').textContent}</div>
                    </div>
                    <div class="detail-item">
                        <div class="detail-label">申请人数：</div>
                        <div class="detail-value">${row.querySelector('td:nth-child(5)').textContent}</div>
                    </div>
                    <div class="detail-item">
                        <div class="detail-label">状态：</div>
                        <div class="detail-value">${status}</div>
                    </div>
                </div>
                <div class="demand-details-description">
                    <h4>需求描述</h4>
                    <p>该支教需求旨在为山区小学提供语文教学支持，帮助当地学生提高语文水平和阅读能力。支教老师将负责小学1-6年级的语文课程教学，包括阅读、写作和语言基础知识等内容。</p>
                </div>
                <div class="demand-details-requirements">
                    <h4>要求条件</h4>
                    <ul>
                        <li>具有教师资格证或相关教学经验</li>
                        <li>热爱教育事业，有责任心和耐心</li>
                        <li>能够适应山区生活环境</li>
                        <li>支教时间至少3个月</li>
                    </ul>
                </div>
                <div class="demand-details-actions">
                    <button class="btn btn-primary" onclick="editDemand('${demandTitle}', null)">编辑需求</button>
                    ${status === '待审核' ? `
                        <button class="btn btn-success" onclick="approveDemand('${demandTitle}', null)">审核通过</button>
                        <button class="btn btn-danger" onclick="rejectDemand('${demandTitle}', null)">拒绝</button>
                    ` : ''}
                    ${status === '已关闭' ? `
                        <button class="btn btn-secondary" onclick="reopenDemand('${demandTitle}', null)">重新开放</button>
                    ` : ''}
                </div>
            </div>
        `
    });
}

/**
 * 编辑需求
 * @param {string} demandTitle - 需求标题
 * @param {HTMLElement} row - 表格行元素
 */
function editDemand(demandTitle, row) {
    // 如果没有传入行元素，则查找对应的行
    if (!row) {
        // 使用更兼容的方式查找包含指定标题的行
        const titleElements = document.querySelectorAll('.demand-title');
        for (let i = 0; i < titleElements.length; i++) {
            if (titleElements[i].textContent === demandTitle) {
                row = titleElements[i].closest('tr');
                break;
            }
        }
        if (!row) return;
    }
    
    // 获取需求当前信息
    const location = row.querySelector('.demand-location').textContent.trim().replace('\n', '').replace(/\s+/g, ' ').trim();
    const publisher = row.querySelector('td:nth-child(3)').textContent;
    const status = row.querySelector('.status-badge').textContent;
    
    // 获取标签信息
    const subjectTag = row.querySelector('.demand-tag.subject');
    const subject = subjectTag ? subjectTag.textContent : '';
    
    const durationTag = row.querySelector('.demand-tag.duration');
    const duration = durationTag ? durationTag.textContent : '';
    
    const isUrgent = !!row.querySelector('.demand-tag.urgent');
    
    // 创建编辑模态框
    window.utils.createModal({
        title: '编辑需求',
        content: `
            <form id="edit-demand-form">
                <div class="form-group">
                    <label for="edit-demand-title">需求标题</label>
                    <input type="text" id="edit-demand-title" class="form-control" value="${demandTitle}">
                </div>
                <div class="form-group">
                    <label for="edit-demand-location">需求地点</label>
                    <input type="text" id="edit-demand-location" class="form-control" value="${location}">
                </div>
                <div class="form-group">
                    <label for="edit-demand-publisher">发布者</label>
                    <input type="text" id="edit-demand-publisher" class="form-control" value="${publisher}">
                </div>
                <div class="form-group">
                    <label for="edit-demand-subject">学科</label>
                    <select id="edit-demand-subject" class="form-control">
                        <option ${subject === '语文' ? 'selected' : ''}>语文</option>
                        <option ${subject === '数学' ? 'selected' : ''}>数学</option>
                        <option ${subject === '英语' ? 'selected' : ''}>英语</option>
                        <option ${subject === '物理' ? 'selected' : ''}>物理</option>
                        <option ${subject === '化学' ? 'selected' : ''}>化学</option>
                        <option ${subject === '生物' ? 'selected' : ''}>生物</option>
                        <option ${subject === '历史' ? 'selected' : ''}>历史</option>
                        <option ${subject === '地理' ? 'selected' : ''}>地理</option>
                        <option ${subject === '政治' ? 'selected' : ''}>政治</option>
                        <option ${subject === '音乐' ? 'selected' : ''}>音乐</option>
                        <option ${subject === '美术' ? 'selected' : ''}>美术</option>
                        <option ${subject === '体育' ? 'selected' : ''}>体育</option>
                        <option ${subject === '科学' ? 'selected' : ''}>科学</option>
                    </select>
                </div>
                <div class="form-group">
                    <label for="edit-demand-duration">支教时长</label>
                    <select id="edit-demand-duration" class="form-control">
                        <option ${duration === '1个月' ? 'selected' : ''}>1个月</option>
                        <option ${duration === '2个月' ? 'selected' : ''}>2个月</option>
                        <option ${duration === '3个月' ? 'selected' : ''}>3个月</option>
                        <option ${duration === '6个月' ? 'selected' : ''}>6个月</option>
                        <option ${duration === '1年' ? 'selected' : ''}>1年</option>
                    </select>
                </div>
                <div class="form-group">
                    <label for="edit-demand-status">状态</label>
                    <select id="edit-demand-status" class="form-control">
                        <option ${status === '已发布' ? 'selected' : ''}>已发布</option>
                        <option ${status === '待审核' ? 'selected' : ''}>待审核</option>
                        <option ${status === '已关闭' ? 'selected' : ''}>已关闭</option>
                    </select>
                </div>
                <div class="form-check">
                    <input type="checkbox" id="edit-demand-urgent" class="form-check-input" ${isUrgent ? 'checked' : ''}>
                    <label for="edit-demand-urgent" class="form-check-label">标记为紧急</label>
                </div>
                <div class="form-group">
                    <label for="edit-demand-description">需求描述</label>
                    <textarea id="edit-demand-description" class="form-control" rows="5">该支教需求旨在为山区小学提供语文教学支持，帮助当地学生提高语文水平和阅读能力。支教老师将负责小学1-6年级的语文课程教学，包括阅读、写作和语言基础知识等内容。</textarea>
                </div>
                <div class="form-group">
                    <label for="edit-demand-requirements">要求条件</label>
                    <textarea id="edit-demand-requirements" class="form-control" rows="5">具有教师资格证或相关教学经验\n热爱教育事业，有责任心和耐心\n能够适应山区生活环境\n支教时间至少3个月</textarea>
                </div>
                <div class="form-actions">
                    <button type="button" class="btn btn-secondary" onclick="window.utils.closeModal()">取消</button>
                    <button type="button" class="btn btn-primary" onclick="saveDemandEdit('${demandTitle}')">保存</button>
                </div>
            </form>
        `
    });
}

/**
 * 保存需求编辑
 * @param {string} originalTitle - 原需求标题
 */
function saveDemandEdit(originalTitle) {
    // 获取表单数据
    const title = document.getElementById('edit-demand-title').value;
    const location = document.getElementById('edit-demand-location').value;
    const publisher = document.getElementById('edit-demand-publisher').value;
    const subject = document.getElementById('edit-demand-subject').value;
    const duration = document.getElementById('edit-demand-duration').value;
    const status = document.getElementById('edit-demand-status').value;
    const isUrgent = document.getElementById('edit-demand-urgent').checked;
    
    // 验证表单数据
    if (!title || !location || !publisher) {
        window.utils.showNotification('需求标题、地点和发布者不能为空', 'error');
        return;
    }
    
    // 模拟保存操作
    // 实际项目中应该发送AJAX请求到服务器
    setTimeout(() => {
        // 查找对应的行 - 使用更兼容的方式
        let row = null;
        const titleElements = document.querySelectorAll('.demand-title');
        for (let i = 0; i < titleElements.length; i++) {
            if (titleElements[i].textContent === originalTitle) {
                row = titleElements[i].closest('tr');
                break;
            }
        }
        
        if (row) {
            // 更新需求信息
            row.querySelector('.demand-title').textContent = title;
            row.querySelector('.demand-location').innerHTML = `<i class="bi bi-geo-alt"></i> ${location}`;
            row.querySelector('td:nth-child(3)').textContent = publisher;
            
            // 更新标签
            const tagsContainer = row.querySelector('.demand-tags');
            tagsContainer.innerHTML = `
                <span class="demand-tag subject">${subject}</span>
                <span class="demand-tag duration">${duration}</span>
                ${isUrgent ? '<span class="demand-tag urgent">紧急</span>' : ''}
            `;
            
            // 更新状态
            const statusBadge = row.querySelector('.status-badge');
            statusBadge.textContent = status;
            
            // 更新状态样式
            statusBadge.className = 'status-badge';
            if (status === '已发布') {
                statusBadge.classList.add('status-active');
            } else if (status === '待审核') {
                statusBadge.classList.add('status-pending');
            } else if (status === '已关闭') {
                statusBadge.classList.add('status-closed');
            }
            
            // 更新下拉菜单选项
            updateDropdownMenu(row, status);
            
            // 重新绑定事件
            bindDemandActions();
        }
        
        // 关闭模态框
        window.utils.closeModal();
        
        // 显示成功通知
        window.utils.showNotification(`需求 ${title} 已更新`, 'success');
    }, 500);
}

/**
 * 更新下拉菜单选项
 * @param {HTMLElement} row - 表格行元素
 * @param {string} status - 需求状态
 */
function updateDropdownMenu(row, status) {
    const dropdown = row.querySelector('.dropdown-menu');
    
    if (status === '已发布') {
        dropdown.innerHTML = `
            <a href="#" class="dropdown-item">
                <i class="bi bi-arrow-up-circle"></i> 置顶
            </a>
            <a href="#" class="dropdown-item text-danger">
                <i class="bi bi-trash"></i> 删除
            </a>
        `;
    } else if (status === '待审核') {
        dropdown.innerHTML = `
            <a href="#" class="dropdown-item">
                <i class="bi bi-check-circle"></i> 审核通过
            </a>
            <a href="#" class="dropdown-item">
                <i class="bi bi-x-circle"></i> 拒绝
            </a>
            <a href="#" class="dropdown-item text-danger">
                <i class="bi bi-trash"></i> 删除
            </a>
        `;
    } else if (status === '已关闭') {
        dropdown.innerHTML = `
            <a href="#" class="dropdown-item">
                <i class="bi bi-arrow-counterclockwise"></i> 重新开放
            </a>
            <a href="#" class="dropdown-item text-danger">
                <i class="bi bi-trash"></i> 删除
            </a>
        `;
    }
}

/**
 * 加载指定页面的数据
 * @param {number|string} page - 页码
 */
function loadPage(page) {
    // 这里是模拟加载页面数据的逻辑
    // 实际项目中应该通过AJAX请求从服务器获取数据
    console.log(`加载第${page}页数据`);
    
    // 模拟页面切换效果
    const tableContainer = document.querySelector('.demand-table-container');
    tableContainer.style.opacity = '0.5';
    
    // 模拟加载延迟
    setTimeout(() => {
        tableContainer.style.opacity = '1';
        // 这里可以更新表格内容
    }, 1000);
    // 更新分页
    updatePagination();
   
}
}
    }
    )}